package hw2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileIO {
	// Returns the contents of the file in a byte array.
	public static byte[] getBytesFromFile(String filename) throws IOException {
		File file = new File(filename);
	    InputStream is = new FileInputStream(file);

	    // Get the size of the file
	    long length = file.length();

	    if (length > Integer.MAX_VALUE) {
	        // File is too large
	    }

	    // Create the byte array to hold the data
	    byte[] bytes = new byte[(int)length];

	    // Read in the bytes
	    int offset = 0;
	    int numRead = 0;
	    while (offset < bytes.length
	           && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
	        offset += numRead;
	    }

	    // Ensure all the bytes have been read in
	    if (offset < bytes.length) {
	        throw new IOException("Could not completely read file "+filename);
	    }

	    // Close the input stream and return bytes
	    is.close();
	    return bytes;
	}

	public static void writeBytesToFile(byte[] bytes, String filename) throws IOException {
		File output = new File(filename);
		FileOutputStream os = new FileOutputStream(output);
		os.write(bytes);
		os.close();
	}
}
